package sistema.controleVendas.persistencia;

import java.util.List;

import javax.persistence.EntityManager;

import sistema.controleVendas.entidades.Produto;

public class GerenciarProdutosPersistencia {
	EntityManager em = Conexao.contectar();
	public Produto adicionarProduto(Produto produto){
		em.getTransaction().begin();
		em.persist(produto);
		em.getTransaction().commit();
		return produto;
	}
	public void atualizarProduto(Produto produto){
		em.getTransaction().begin();
		em.persist(produto);
		em.getTransaction().commit();
	}
	public void removerProduto(Produto produto){
		em.getTransaction().begin();
		em.remove(produto);
		em.getTransaction().commit();

	}
	public Produto buscarProduto(Produto produto){
		Produto p = new Produto();
		p = (Produto)em.createQuery("Select p From Produto p Where p.id= :param")
		.setParameter("param", produto.getId())
		.getSingleResult();
		return p;
	}
	public List<Produto> listarProdutos(){
		List<Produto> produtos = em.createQuery("Select p From Produto p")
		.getResultList();
		return produtos;
	}
	public List<Produto> listarProdutoPorTipoProduto(Produto produto){
		List<Produto> produtos = em.createQuery("Select p From Produto p Where p.tipoProduto.id=:param")
		.setParameter("param", produto.getTipoProduto().getId())
		.getResultList();
		return produtos;
	}
	public List<Produto> buscarProdutos(String produto){
		em.getTransaction().begin();
		List<Produto> produtos = em.createQuery("Select p From Produto p Where lower (p.descricao) like :param")
		.setParameter("param", "%"+produto.toLowerCase()+"%").getResultList();
		em.getTransaction().commit();
		return produtos;
	}

	public Produto buscarProdutoId(int id){
		em.getTransaction().begin();
		Produto produto = (Produto) em.createQuery("Select p from Produto p where p.id=:param").
		setParameter("param", id).getSingleResult();
		em.getTransaction().commit();
		return produto;
	}

}
